function add<T>(a: T, b: T) {
    return `${a} ${b}`;
}

console.log(add(1, 'y'));               //类型推断达到预期效果，代码有描红

function join(arr: any[]) {
    return arr.join(' ');
}

console.log(join([1, 'y', {}, true, undefined]));   //类型推断毫无意义，T 成了 any 类型
console.log(join<string>([888, 'y']));  //要用这样笨拙的写法才会描红。直接调用 join() 已经没错的情况下，肯定不会再尝试 join<string>()
